{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prediction sine wave function using Gaussian Process\n",
    "\n",
    "An example for Gaussian process algorithm to predict sine wave function.\n",
    "This example is from [\"Gaussian Processes regression: basic introductory example\"](http://scikit-learn.org/stable/auto_examples/gaussian_process/plot_gp_regression.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.gaussian_process import GaussianProcess\n",
    "from matplotlib import pyplot as pl\n",
    "%matplotlib inline\n",
    "\n",
    "np.random.seed(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# The function to predict\n",
    "def f(x):\n",
    "    return x*np.sin(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# --------------------------\n",
    "#  First the noiseless case\n",
    "# --------------------------\n",
    "\n",
    "# Obervations\n",
    "X = np.atleast_2d([0., 1., 2., 3., 5., 6., 7., 8., 9.5]).T\n",
    "y = f(X).ravel()\n",
    "\n",
    "#X = np.atleast_2d(np.linspace(0, 100, 200)).T\n",
    "\n",
    "# Mesh the input space for evaluations of the real function, the prediction and its MSE\n",
    "x = np.atleast_2d(np.linspace(0, 10, 1000)).T\n",
    "\n",
    "# Instanciate a Gaussian Process model\n",
    "gp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1e-1,\n",
    "                     random_start=100)\n",
    "\n",
    "# Fit to data using Maximum Likelihood Estimation of the parameters\n",
    "gp.fit(X, y)\n",
    "\n",
    "# Make the prediction on the meshed x-axis (ask for MSE as well)\n",
    "y_pred, MSE = gp.predict(x, eval_MSE=True)\n",
    "sigma = np.sqrt(MSE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x107a132b0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nNNeZ4RzVHQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106eba128>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot the function, the prediction and the 95% confidence interval based on the MSE\n",
    "fig = pl.figure()\n",
    "pl.plot(x, f(x), 'r:', label=u'$f(x) = x\\,\\sin(x)$')\n",
    "pl.plot(X, y, 'r.', markersize=10, label=u'Observations')\n",
    "pl.plot(x, y_pred, 'b-', label=u'Prediction')\n",
    "pl.fill(np.concatenate([x, x[::-1]]),\n",
    "        np.concatenate([y_pred - 1.9600 * sigma,\n",
    "                       (y_pred + 1.9600 * sigma)[::-1]]),\n",
    "        alpha=.5, fc='b', ec='None', label='95% confidence interval')\n",
    "pl.xlabel('$x$')\n",
    "pl.ylabel('$f(x)$')\n",
    "pl.ylim(-10, 20)\n",
    "pl.legend(loc='upper left')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Developer/Applications/anaconda/lib/python3.4/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
      "  if self._edgecolors == str('face'):\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nmVkm/w+8j+ssk7YruQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106eba828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# now the noisy case\n",
    "X = np.linspace(0.1, 9.9, 20)\n",
    "X = np.atleast_2d(X).T\n",
    "\n",
    "# Observations and noise\n",
    "y = f(X).ravel()\n",
    "dy = 0.5 + 1.0 * np.random.random(y.shape)\n",
    "noise = np.random.normal(0, dy)\n",
    "y += noise\n",
    "\n",
    "# Mesh the input space for evaluations of the real function, the prediction and\n",
    "# its MSE\n",
    "x = np.atleast_2d(np.linspace(0, 10, 1000)).T\n",
    "\n",
    "# Instanciate a Gaussian Process model\n",
    "gp = GaussianProcess(corr='squared_exponential', theta0=1e-1,\n",
    "                     thetaL=1e-3, thetaU=1,\n",
    "                     nugget=(dy / y) ** 2,\n",
    "                     random_start=100)\n",
    "\n",
    "# Fit to data using Maximum Likelihood Estimation of the parameters\n",
    "gp.fit(X, y)\n",
    "\n",
    "# Make the prediction on the meshed x-axis (ask for MSE as well)\n",
    "y_pred, MSE = gp.predict(x, eval_MSE=True)\n",
    "sigma = np.sqrt(MSE)\n",
    "\n",
    "# Plot the function, the prediction and the 95% confidence interval based on\n",
    "# the MSE\n",
    "fig = pl.figure()\n",
    "pl.plot(x, f(x), 'r:', label=u'$f(x) = x\\,\\sin(x)$')\n",
    "pl.errorbar(X.ravel(), y, dy, fmt='r.', markersize=10, label=u'Observations')\n",
    "pl.plot(x, y_pred, 'b-', label=u'Prediction')\n",
    "pl.fill(np.concatenate([x, x[::-1]]),\n",
    "        np.concatenate([y_pred - 1.9600 * sigma,\n",
    "                       (y_pred + 1.9600 * sigma)[::-1]]),\n",
    "        alpha=.5, fc='b', ec='None', label='95% confidence interval')\n",
    "pl.xlabel('$x$')\n",
    "pl.ylabel('$f(x)$')\n",
    "pl.ylim(-10, 20)\n",
    "pl.legend(loc='upper left')\n",
    "\n",
    "pl.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
